<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //利用构造函数创建对象
        //我们需要创建四大天王的对象  相同的属性: 名字 年龄 性别  相同的方法: 唱歌
        //构造函数的语法格式
        /* function 构造函数名() { //声明构造函数
            this.属性 = 值;
            this.方法 = function() {

            }
        }
        new 构造函数名();  */ //调用构造函数

        //实例如下:
        function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(song) {
                console.log(song);
            }
        }
        var ldh = new Star('刘德华', 18, '男'); //调用函数返回的是一个对象
        console.log(typeof ldh); //object
        console.log(ldh.name); //刘德华
        console.log(ldh['sex']); //男
        ldh.sing('冰雨'); //冰雨   (调用了方法)     因为sing里面也是一个函数 所以也可以将参数传过去

        var zxy = new Star('张学友', 18, '男');
        console.log(zxy.age); //18
        console.log(zxy.name); //张学友
        console.log(zxy.sex); //男
        console.log(typeof zxy); //typeof
        zxy.sing('李兰香'); //李兰香
        //1. 构造函数名字首字母要大写(其实为了方便和普通函数区分, 最好首字母还是大写)
        //2. 构造函数不需要return 就可以返回结果
        //3. 调用构造函数必须使用 new
        //4.只要new Star()  调用函数 就创建一个对象  ldh{}
        //5.我们的属性和方法前面必须添加 this




        //练习:利用构造函数创建两个英雄对象,函数中的公共部分包括:姓名属性(name),类型属性(type),血量属性(blood)和攻击方式(attack)
        //英雄对象信息如下:
        //廉颇 力量型 500血量 攻击:近战 
        //后羿 射手型 100血量 攻击:远程

        function hero(name, type, blood, attack) {
            this.name = name;
            this.type = type;
            this.blood = blood;
            this.attack = attack;
            this.skills = function(big_Skill) {
                console.log(big_Skill);
            }
        }
        var lianPo = new hero('廉颇', '力量型', '500血量', '近战');
        lianPo.skills('正义豪腕'); //正义豪腕
        console.log(lianPo.name); //廉颇
        console.log(lianPo.type); //力量型

        var houYi = new hero('后羿', '射手型', '100血量', '远程');
        houYi.skills('灼日之矢'); //灼日之矢
        console.log(houYi.name); //后羿
        console.log(houYi['type']); //射手型
    </script>
</head>

<body>

</body>

</html>